/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2006，所有权利保留。
 * 
 * 文件名：	IProcessLogMgr.java
 * 模块说明：	
 * 修改历史：
 * 2006-11-10 - lxm - 创建。
 */
package com.hd123.rumba.log;

import net.sf.hibernate.HibernateException;

import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.runtime.IManager;

/**
 * 处理过程日志 | 管理员 | 接口类
 * 
 * @author lxm
 * 
 */
public interface IProcessLogMgr extends IManager {

  /**
   * 创建一个处理过程日志。
   * 
   * @return 返回创建的处理过程日志。
   * @throws BusinessException
   */
  public IProcessLog createLog() throws BusinessException;

  /**
   * 保存指定的处理过程日志到数据库。
   * <p>
   * 
   * 采用“独立事务”，即不受外部事务是否回滚的影响，确保写日志的成功。
   * 
   * @param log
   *          指定被保存的处理过程日志。s
   * @throws BusinessException
   * @throws HibernateException
   */
  public void saveT(IProcessLog log) throws BusinessException, HibernateException;

  /**
   * 物理删除指定的处理过程日志。
   * 
   * @param log
   *          指定被删除的处理过程日志。
   * @throws BusinessException
   * @throws HibernateException
   */
  public void remove(IProcessLog log) throws BusinessException, HibernateException;

  /**
   * 根据uuid取得处理过程日志。
   * 
   * @param uuid
   *          指定处理过程日志uuid。
   * @return 返回取得的处理过程日志，若找不到，则返回null。
   * @throws BusinessException
   * @throws HibernateException
   */
  public IProcessLog getLog(String uuid) throws BusinessException, HibernateException;

  /**
   * 取得指定处理过程实例最大的ItemNo。
   * 
   * @param processUuid
   *          指定处理过程实例的uuid。
   * @return 返回最大的ItemNo，若没有附和条件的记录，则返回-1。
   * @throws BusinessException
   * @throws HibernateException
   */
  public int getMaxItemNo(String processUuid) throws BusinessException, HibernateException;
}
